package com.cskaoyan.javase.oop3._2inner._2static._0introduction;

/**
 * 首先要明确静态内部类和外围类的关系:
 *      外围类和静态内部类本质上仍然是两个独立的类
 *      只不过静态内部类进入外围类内部,借助外围类来保护自己
 *      所以静态内部类除了有四种访问权限外,和普通类一致
 *
 * 静态内部类
 * 语法:
 * //外围（普通）类
 * [访问权限修饰符] class EnclosedClazz{
 * // 静态内部类访问权限修饰符，有四个，和普通成员一样
 *   [访问权限修饰符] static class NestedClazz{
 *  }
 * }
 * 静态内部类的自身特点:
 * 依然主要从以下几个角度分析：
 * 访问权限修饰符: 四种都有
 *
 * 成员特点:
 * 和普通类完全一致,没有任何区别
 *
 * 继承和实现
 * 可以继承可以实现,而且由于静态内部类和外围类相对成员内部类更加独立,它的继承和实现要更加灵活
 * 稍有不同的是
 * 如果静态内部类去继承内部类的话,这个类也必须是静态内部类
 *
 * @since 11:27
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}

class EnclosedClazz {
    static class A {
    }

    private static class StaticInnerClazz extends A {
        int a;
        private int b;
        static int c;
        static final String STRING = "123";

        static void testStatic() {
        }

        void test() {
        }

        {
        }

        static {
        }

        public StaticInnerClazz(int a, int b) {
            this.a = a;
            this.b = b;
        }

        public StaticInnerClazz() {
        }
    }
}